import type { PageConfig, DynamicRouteMeta } from "@/types/dynamic";
import { getPageConfig as getConfigFromManager } from "@/config/pageConfigManager";

/**
 * 获取页面配置
 */
export function getPageConfig(
  routePath: string,
  routeMeta?: DynamicRouteMeta,
): PageConfig {
  // 如果路由meta中有配置，优先使用
  if (routeMeta?.pageConfig) {
    if (typeof routeMeta.pageConfig === "string") {
      // 如果是字符串，表示配置文件路径，这里可以扩展为从文件加载配置
      return getConfigFromManager(routePath);
    } else {
      // 如果是对象，直接使用
      return routeMeta.pageConfig;
    }
  }

  // 从配置管理器获取配置
  return getConfigFromManager(routePath);
}

/**
 * 从配置文件加载页面配置（可扩展）
 */
export async function loadPageConfigFromFile(
  configPath: string,
): Promise<PageConfig | null> {
  try {
    // 这里可以实现从配置文件加载逻辑
    // 例如从 JSON 文件、远程接口等加载配置
    console.log("Loading config from:", configPath);
    return null;
  } catch (error) {
    console.error("Failed to load page config:", error);
    return null;
  }
}

/**
 * 合并页面配置
 */
export function mergePageConfig(
  defaultConfig: PageConfig,
  customConfig: Partial<PageConfig>,
): PageConfig {
  return {
    ...defaultConfig,
    ...customConfig,
    api: { ...defaultConfig.api, ...customConfig.api },
    fields: customConfig.fields || defaultConfig.fields,
    columns: customConfig.columns || defaultConfig.columns,
    buttons: customConfig.buttons || defaultConfig.buttons,
  };
}
